39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
52#include "drv_spi_master.h"
75#define FINGERPRINT5_CMD_STATUS 0x0040
76#define FINGERPRINT5_CMD_VERSION 0x0041
77#define FINGERPRINT5_CMD_BIST 0x0044
78#define FINGERPRINT5_CMD_CAPTURE 0x0050
79#define FINGERPRINT5_CMD_ABORT 0x0052
80#define FINGERPRINT5_CMD_IMAGE_DATA 0x0053
81#define FINGERPRINT5_CMD_ENROLL 0x0054
82#define FINGERPRINT5_CMD_IDENTIFY 0x0055
83#define FINGERPRINT5_CMD_LIST_TEMPLATES 0x0060
84#define FINGERPRINT5_CMD_DELETE_TEMPLATE 0x0061
85#define FINGERPRINT5_CMD_GET_SYSTEM_CONFIG 0x006A
86#define FINGERPRINT5_CMD_SET_SYSTEM_CONFIG 0x006B
87#define FINGERPRINT5_CMD_RESET 0x0072
88#define FINGERPRINT5_CMD_SET_DBG_LOG_LEVEL 0x00B0
89#define FINGERPRINT5_CMD_DATA_GET 0x0101
90#define FINGERPRINT5_CMD_NAVIGATION 0x0200
91#define FINGERPRINT5_CMD_GPIO_CONTROL 0x0300
97#define FINGERPRINT5_FRAME_PROTOCOL_VERSION 0x0004
98#define FINGERPRINT5_FRAME_TYPE_REQUEST 0x11
99#define FINGERPRINT5_FRAME_TYPE_RESPONSE 0x12
100#define FINGERPRINT5_FRAME_TYPE_EVENT 0x13
101#define FINGERPRINT5_FRAME_FLAG_HOST 0x0010
102#define FINGERPRINT5_FRAME_FLAG_FW_BL 0x0020
103#define FINGERPRINT5_FRAME_FLAG_FW_APP 0x0040
104#define FINGERPRINT5_FRAME_CMD_MAX_DATA_SIZE 244
105#define FINGERPRINT5_FRAME_MAX_SIZE 256
111#define FINGERPRINT5_MAX_VERSION_SIZE 100
112#define FINGERPRINT5_MAX_NUM_TEMPLATES 12
118#define FINGERPRINT5_EVENT_NONE 0
119#define FINGERPRINT5_EVENT_IDLE 1
120#define FINGERPRINT5_EVENT_ARMED 2
121#define FINGERPRINT5_EVENT_FINGER_DETECT 3
122#define FINGERPRINT5_EVENT_FINGER_LOST 4
123#define FINGERPRINT5_EVENT_IMAGE_READY 5
124#define FINGERPRINT5_EVENT_CMD_FAILED 6
130#define FINGERPRINT5_STATE_APP_FW_READY 0x0001
131#define FINGERPRINT5_STATE_CAPTURE 0x0004
132#define FINGERPRINT5_STATE_IMAGE_AVAILABLE 0x0010
133#define FINGERPRINT5_STATE_DATA_TRANSFER 0x0040
134#define FINGERPRINT5_STATE_FINGER_DOWN 0x0080
135#define FINGERPRINT5_STATE_SYS_ERROR 0x0400
136#define FINGERPRINT5_STATE_ENROLL 0x1000
137#define FINGERPRINT5_STATE_IDENTIFY 0x2000
138#define FINGERPRINT5_STATE_NAVIGATION 0x4000
144#define FINGERPRINT5_TEMPLATE_ID_TYPE_NONE 0x1012
145#define FINGERPRINT5_TEMPLATE_ID_TYPE_ALL 0x2023
146#define FINGERPRINT5_TEMPLATE_ID_TYPE_SPECIFIED 0x3034
147#define FINGERPRINT5_TEMPLATE_ID_TYPE_NEW 0x4045
153#define FINGERPRINT5_ENROLL_FEEDBACK_DONE 1
154#define FINGERPRINT5_ENROLL_FEEDBACK_PROGRESS 2
155#define FINGERPRINT5_ENROLL_FEEDBACK_REJECT_LOW_QUALITY 3
156#define FINGERPRINT5_ENROLL_FEEDBACK_REJECT_LOW_COVERAGE 4
157#define FINGERPRINT5_ENROLL_FEEDBACK_REJECT_LOW_MOBILITY 5
158#define FINGERPRINT5_ENROLL_FEEDBACK_REJECT_OTHER 6
159#define FINGERPRINT5_ENROLL_FEEDBACK_PROGRESS_IMMOBILE 7
165#define FINGERPRINT5_IDENTIFY_RESULT_MATCH 0x61EC
166#define FINGERPRINT5_IDENTIFY_RESULT_NO_MATCH 0xBAAD
172#define FINGERPRINT5_NAV_ORIENTATION_0 0
173#define FINGERPRINT5_NAV_ORIENTATION_90 1
174#define FINGERPRINT5_NAV_ORIENTATION_180 2
175#define FINGERPRINT5_NAV_ORIENTATION_270 3
181#define FINGERPRINT5_GPIO_SUB_CMD_GET 0
182#define FINGERPRINT5_GPIO_SUB_CMD_SET 1
183#define FINGERPRINT5_GPIO_MODE_NOT_USED 0
184#define FINGERPRINT5_GPIO_MODE_OUTPUT_PP 1
185#define FINGERPRINT5_GPIO_MODE_OUTPUT_OD 2
186#define FINGERPRINT5_GPIO_MODE_INPUT_PULL_NONE 3
187#define FINGERPRINT5_GPIO_MODE_INPUT_PULL_UP 4
188#define FINGERPRINT5_GPIO_MODE_INPUT_PULL_DOWN 5
189#define FINGERPRINT5_GPIO_STATE_RESET 0
190#define FINGERPRINT5_GPIO_STATE_SET 1
196#define FINGERPRINT5_SYS_CFG_VERSION 1
197#define FINGERPRINT5_SYS_CFG_FLAG_STATUS_EVT_BOOT 0x00000001
198#define FINGERPRINT5_SYS_CFG_FLAG_UART_IN_STOP_MODE 0x00000010
199#define FINGERPRINT5_SYS_CFG_FLAG_UART_IRQ_TX 0x00000020
200#define FINGERPRINT5_SYS_CFG_UART_BAUDRATE_9600 1
201#define FINGERPRINT5_SYS_CFG_UART_BAUDRATE_19200 2
202#define FINGERPRINT5_SYS_CFG_UART_BAUDRATE_57600 3
203#define FINGERPRINT5_SYS_CFG_UART_BAUDRATE_115200 4
204#define FINGERPRINT5_SYS_CFG_UART_BAUDRATE_921600 5
205#define FINGERPRINT5_SYS_CFG_TYPE_DEFAULT 0
206#define FINGERPRINT5_SYS_CFG_TYPE_CUSTOM 1
212#define FINGERPRINT5_RX_TIMEOUT_MS 3000
219#define FINGERPRINT5_TX_DRV_BUFFER_SIZE 256
220#define FINGERPRINT5_RX_DRV_BUFFER_SIZE 256
230#define FINGERPRINT5_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
231#define FINGERPRINT5_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
249#define FINGERPRINT5_MAP_MIKROBUS( cfg, mikrobus ) \
250 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
251 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
252 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
253 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
254 cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
255 cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
256 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
257 cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT );
fingerprint5_drv_t
Fingerprint 5 Click driver selector.
Definition fingerprint5.h:267
@ FINGERPRINT5_DRV_SEL_SPI
Definition fingerprint5.h:269
@ FINGERPRINT5_DRV_SEL_UART
Definition fingerprint5.h:268
fingerprint5_return_value_t
Fingerprint 5 Click return value data.
Definition fingerprint5.h:430
@ FINGERPRINT5_ERROR
Definition fingerprint5.h:432
@ FINGERPRINT5_OK
Definition fingerprint5.h:431
@ FINGERPRINT5_ERROR_TIMEOUT
Definition fingerprint5.h:433
#define FINGERPRINT5_RX_DRV_BUFFER_SIZE
Definition fingerprint5.h:220
#define FINGERPRINT5_TX_DRV_BUFFER_SIZE
Fingerprint 5 driver buffer size.
Definition fingerprint5.h:219
#define FINGERPRINT5_FRAME_MAX_SIZE
Definition fingerprint5.h:105
#define FINGERPRINT5_MAX_NUM_TEMPLATES
Definition fingerprint5.h:112
#define FINGERPRINT5_MAX_VERSION_SIZE
Fingerprint 5 buffers settings.
Definition fingerprint5.h:111
#define FINGERPRINT5_FRAME_CMD_MAX_DATA_SIZE
Definition fingerprint5.h:104
err_t fingerprint5_request_abort(fingerprint5_t *ctx)
Fingerprint 5 request abort function.
err_t fingerprint5_set_gpio(fingerprint5_t *ctx, uint8_t pin, uint8_t mode, uint8_t state)
Fingerprint 5 set GPIO function.
err_t fingerprint5_init(fingerprint5_t *ctx, fingerprint5_cfg_t *cfg)
Fingerprint 5 initialization function.
err_t fingerprint5_set_config(fingerprint5_t *ctx, fingerprint5_sys_config_t *config)
Fingerprint 5 set system config function.
err_t fingerprint5_read_cmd(fingerprint5_t *ctx)
Fingerprint 5 read command function.
err_t fingerprint5_generic_write(fingerprint5_t *ctx, uint8_t *data_in, uint16_t len)
Fingerprint 5 write data function.
err_t fingerprint5_send_cmd(fingerprint5_t *ctx)
Fingerprint 5 send command function.
err_t fingerprint5_identify_finger(fingerprint5_t *ctx)
Fingerprint 5 identify finger function.
err_t fingerprint5_run_bist(fingerprint5_t *ctx)
Fingerprint 5 run BIST function.
err_t fingerprint5_get_gpio(fingerprint5_t *ctx, uint8_t pin)
Fingerprint 5 get GPIO function.
err_t fingerprint5_delete_templates(fingerprint5_t *ctx)
Fingerprint 5 delete templates function.
err_t fingerprint5_start_navigation(fingerprint5_t *ctx, uint8_t orientation)
Fingerprint 5 start navigation function.
uint8_t fingerprint5_get_irq_pin(fingerprint5_t *ctx)
Fingerprint 5 get IRQ pin function.
void fingerprint5_set_rst_pin(fingerprint5_t *ctx, uint8_t state)
Fingerprint 5 set RST pin function.
err_t fingerprint5_get_config(fingerprint5_t *ctx, uint8_t type)
Fingerprint 5 get system config function.
err_t fingerprint5_generic_read(fingerprint5_t *ctx, uint8_t *data_out, uint16_t len)
Fingerprint 5 read data function.
err_t fingerprint5_enroll_finger(fingerprint5_t *ctx)
Fingerprint 5 enroll finger function.
err_t fingerprint5_list_templates(fingerprint5_t *ctx)
Fingerprint 5 list templates function.
void fingerprint5_drv_interface_sel(fingerprint5_cfg_t *cfg, fingerprint5_drv_t drv_sel)
Fingerprint 5 driver interface setup function.
err_t fingerprint5_get_status(fingerprint5_t *ctx)
Fingerprint 5 get status function.
void fingerprint5_cfg_setup(fingerprint5_cfg_t *cfg)
Fingerprint 5 configuration object setup function.
err_t fingerprint5_request_reset(fingerprint5_t *ctx)
Fingerprint 5 request reset function.
void fingerprint5_reset_device(fingerprint5_t *ctx)
Fingerprint 5 hardware reset function.
err_t fingerprint5_get_version(fingerprint5_t *ctx)
Fingerprint 5 get version function.
This file contains SPI specific macros, functions, etc.
Fingerprint 5 Click configuration object.
Definition fingerprint5.h:397
uint32_t baud_rate
Definition fingerprint5.h:411
fingerprint5_drv_t drv_sel
Definition fingerprint5.h:421
pin_name_t irq
Definition fingerprint5.h:408
spi_master_chip_select_polarity_t cs_polarity
Definition fingerprint5.h:419
bool uart_blocking
Definition fingerprint5.h:412
pin_name_t sck
Definition fingerprint5.h:401
uart_data_bits_t data_bit
Definition fingerprint5.h:413
spi_master_mode_t spi_mode
Definition fingerprint5.h:418
pin_name_t tx_pin
Definition fingerprint5.h:404
pin_name_t mosi
Definition fingerprint5.h:400
uint32_t spi_speed
Definition fingerprint5.h:417
pin_name_t rx_pin
Definition fingerprint5.h:403
uart_stop_bits_t stop_bit
Definition fingerprint5.h:415
pin_name_t miso
Definition fingerprint5.h:399
uart_parity_t parity_bit
Definition fingerprint5.h:414
pin_name_t rst
Definition fingerprint5.h:407
pin_name_t cs
Definition fingerprint5.h:402
Fingerprint 5 Click command header object.
Definition fingerprint5.h:278
uint16_t payload_len
Definition fingerprint5.h:281
uint8_t payload[FINGERPRINT5_FRAME_CMD_MAX_DATA_SIZE]
Definition fingerprint5.h:280
uint16_t cmd_id
Definition fingerprint5.h:279
Fingerprint 5 Click enroll status object.
Definition fingerprint5.h:327
uint16_t id
Definition fingerprint5.h:328
uint8_t feedback
Definition fingerprint5.h:329
uint8_t samples_remaining
Definition fingerprint5.h:330
Fingerprint 5 Click identify status object.
Definition fingerprint5.h:339
uint16_t tag
Definition fingerprint5.h:343
uint16_t id
Definition fingerprint5.h:342
uint16_t match
Definition fingerprint5.h:340
uint16_t type
Definition fingerprint5.h:341
Fingerprint 5 Click list templates object.
Definition fingerprint5.h:316
uint16_t template_ids[FINGERPRINT5_MAX_NUM_TEMPLATES]
Definition fingerprint5.h:318
uint16_t num_templates
Definition fingerprint5.h:317
Fingerprint 5 Click status object.
Definition fingerprint5.h:290
uint16_t evt
Definition fingerprint5.h:291
uint16_t app_fail
Definition fingerprint5.h:293
uint16_t state
Definition fingerprint5.h:292
Fingerprint 5 Click system config object.
Definition fingerprint5.h:352
uint16_t idle_time_ms
Definition fingerprint5.h:360
uint32_t sys_flags
Definition fingerprint5.h:355
uint8_t uart_irq_delay_ms
Definition fingerprint5.h:356
uint8_t idfy_lockout_time_s
Definition fingerprint5.h:359
uint8_t uart_baudrate
Definition fingerprint5.h:357
uint16_t finger_scan_int_ms
Definition fingerprint5.h:354
uint16_t version
Definition fingerprint5.h:353
uint8_t idfy_max_cons_fails
Definition fingerprint5.h:358
Fingerprint 5 Click context object.
Definition fingerprint5.h:369
uint8_t uart_rx_buffer[FINGERPRINT5_RX_DRV_BUFFER_SIZE]
Definition fingerprint5.h:380
spi_master_t spi
Definition fingerprint5.h:378
uint8_t frame[FINGERPRINT5_FRAME_MAX_SIZE]
Definition fingerprint5.h:388
fingerprint5_drv_t drv_sel
Definition fingerprint5.h:385
uint8_t uart_tx_buffer[FINGERPRINT5_TX_DRV_BUFFER_SIZE]
Definition fingerprint5.h:381
digital_in_t irq
Definition fingerprint5.h:374
uart_t uart
Definition fingerprint5.h:377
fingerprint5_cmd_t cmd
Definition fingerprint5.h:387
digital_out_t rst
Definition fingerprint5.h:371
uint8_t slave_address
Definition fingerprint5.h:383
pin_name_t chip_select
Definition fingerprint5.h:384
Fingerprint 5 Click version object.
Definition fingerprint5.h:302
uint8_t ver_str[FINGERPRINT5_MAX_VERSION_SIZE]
Definition fingerprint5.h:307
uint8_t fw_fuse_lvl
Definition fingerprint5.h:305
uint32_t unique_id[3]
Definition fingerprint5.h:303
uint8_t fw_id
Definition fingerprint5.h:304
uint16_t ver_str_len
Definition fingerprint5.h:306